/**
 * 
 */
package it.polimi.c4c.entities;

import java.io.Serializable;
import java.util.Calendar;
import java.util.Collection;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.OneToMany;
import javax.persistence.OneToOne;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;

/**
 * @author matteo
 *
 */
@SuppressWarnings("serial")

@Entity
public class ChiamataPausaGruppo extends ChiamataPausa implements Serializable{

	private Calendar istanteApertura;
	private int quorum;
	private Calendar timeout;
	
	public ChiamataPausaGruppo() {
		
	}
	
	/**
	 * @return the id
	 */
	@Id
	@GeneratedValue
	public int getId() {
		return super.getId();
	}
	
	/**
	 * @param id the id to set
	 */
	public void setId(int id) {
		super.setId(id);
	}
	
	/**
	 * @return the stato
	 */
	@Column(nullable = false)
	public StatoChiamata getStato() {
		return super.getStato();
	}
	
	/**
	 * @param stato the stato to set
	 */
	public void setStato(StatoChiamata stato) {
		super.setStato(stato);
	}
	
	/**
	 * @return the luogo
	 */
	@Column(nullable = false)
	public Luogo getLuogo() {
		return super.getLuogo();
	}
	
	/**
	 * @param luogo the luogo to set
	 */
	public void setLuogo(Luogo luogo) {
		super.setLuogo(luogo);
	}
	
	/**
	 * @return the proponente
	 */
	@OneToOne(optional = false)
	public Utente getProponente() {
		return super.getProponente();
	}
	
	/**
	 * @param proponente the proponente to set
	 */
	public void setProponente(Utente proponente) {
		super.setProponente(proponente);
	}	
	
	/**
	 * @return the listaPartecipanti
	 */
	@OneToMany
	public Collection<Utente> getListaPartecipanti() {
		return super.getListaPartecipanti();
	}
	
	/**
	 * @param listaPartecipanti the listaPartecipanti to set
	 */
	public void setListaPartecipanti(Collection<Utente> listaPartecipanti) {
		super.setListaPartecipanti(listaPartecipanti);
	}
	
	/**
	 * @return the istanteApertura
	 */
	@Temporal(TemporalType.TIMESTAMP)
	@Column(nullable = false)
	public Calendar getIstanteApertura() {
		return istanteApertura;
	}
	
	/**
	 * @param istanteApertura the istanteApertura to set
	 */
	public void setIstanteApertura(Calendar istanteApertura) {
		this.istanteApertura = istanteApertura;
	}
	
	/**
	 * @return the quorum
	 */
	@Column(nullable = false)
	public int getQuorum() {
		return quorum;
	}

	/**
	 * @param quorum the quorum to set
	 */
	public void setQuorum(int quorum) {
		this.quorum = quorum;
	}
	/**
	 * @return the timeout
	 */
	@Temporal(TemporalType.TIMESTAMP)
	@Column(name = "timeout", nullable = false)
	public Calendar getTimeout() {
		return timeout;
	}
	/**
	 * @param timeout the timeout to set
	 */
	public void setTimeout(Calendar timeout) {
		this.timeout = timeout;
	}
	
}
